/* Copyright 2001,2002,2003 NAH6
 * All Rights Reserved
 *
 * Parts Copyright DoD, Parts Copyright Starium
 *
 */

#include "celpfilt.h"
#include "lp_syn.h"
#include "lsftopc.h"
#include "movarray.h"

/**************************************************************************
*                                                                         *
* ROUTINE
*		LP_Synthesis
*
* FUNCTION
*		LP Filter input excitation with input LSFs
* SYNOPSIS
*		LP_Synthesis(excitation, lsf, frame_num, speech)
*
*   formal
*
*                       data    I/O
*       name            type    type    function
*       -------------------------------------------------------------------
*	excitation	int	 i	excitation vector
*	lsf		int	 i	line spectral frequencies
*	frame_num	int	 i	frame number of speech
*	speech		float	 o	output speech
*
**************************************************************************/
FILTER 	LP_Filt;

void LP_Synthesis(
float	excitation[SF_LEN],
float	lsf[ORDER],
int	frame_num,
float	speech[SF_LEN])
{
float	pc[ORDER+1];

/*  Convert input LSFs to PCs */
	LSFtoPC(lsf, pc, frame_num);

/*  Perform LP synthesis on excitation to produce speech */
	MoveArray(SF_LEN, excitation, speech);
	do_pfilt_dynamic(&LP_Filt, pc, speech);

}
